1. Technical Field
The present invention is directed to an apparatus, system and method for implementing a generalized queue pair in a system area network. More specifically, the present invention provides a mechanism for providing a generalized queue pair that is made specific by the setting of P_Keys in the queue pair context and the setting of mode bits by a hypervisor indicating the type of P_Key checking to be performed with that queue pair context.
2. Description of Related Art
In a System Area Network (SAN), such as an InfiniBand (IB) network, the hardware provides a message passing mechanism that can be used for Input/Output devices (I/O) and interprocess communications (IPC) between general computing nodes. Processes executing on devices access SAN message passing hardware by posting send/receive messages to send/receive work queues on a SAN channel adapter (CA). These processes also are referred to as “consumers.”
The send/receive work queues (WQ) are assigned to a consumer as a queue pair (QP). The messages can be sent over five different transport types: Reliable Connected (RC), Reliable Datagram (RD), Unreliable Connected (UC), Unreliable Datagram (UD), and Raw Datagram (RawD). Consumers retrieve the results of these messages from a completion queue (CQ) through SAN send and receive work completion (WC) queues. The source channel adapter takes care of segmenting outbound messages and sending them to the destination. The destination channel adapter takes care of reassembling inbound messages and placing them in the memory space designated by the destination's consumer.
Two channel adapter types are present in nodes of the SAN fabric, a host channel adapter (HCA) and a target channel adapter (TCA). The host channel adapter is used by general purpose computing nodes to access the SAN fabric. Consumers use SAN verbs to access host channel adapter functions. The software that interprets verbs and directly accesses the channel adapter is known as the channel interface (CI).
Target channel adapters (TCA) are used by nodes that are the subject of messages sent from host channel adapters. The target channel adapters serve a similar function as that of the host channel adapters in providing the target node an access point to the SAN fabric.
Thus, with the SAN architecture described above, an Ethernet device driver can communicate with an Ethernet adapter by posting send/receive messages to a Host Channel Adapter (HCA) and retrieve the results of these messages through the HCA's Send and Receive work Queues. The Ethernet adapter includes a Target Channel Adapter, which is the component that attaches to the SAN. Thus, to attach to a Local Area Network (LAN), such as an Internet Protocol (IP) and Ethernet network, an Ethernet adapter is needed as well as a switch or router that attaches the Ethernet adapter to the IP based LAN.
Often it is beneficial to logically partition a system so as to support a plurality of operating system environments. Such logical partitioning allows each operating system, and applications operating within that operating system environment, to view the resources of the system as being dedicated to that operating system environment even though, in actuality, the resources are shared by a plurality of operating system environments. Such logical partitioning allows a system to support multiple different environments and thus, increases the versatility of the system while reducing the cost of maintaining the different environments by sharing of resources.
It should be appreciated that as a system area network becomes more complex, such as in a logically partitioned system, it becomes more difficult and restrictive for a host channel adapter to directly provide the correct number of different resource types. For example, a port on a host channel adapter is required to provide one queue pair 0, one queue pair 1, queue pairs for applications, and optionally, queue pairs for multicast groups. Each of these different types of queue pairs may require variations in P_Key handling.
While it is possible to reserve a full set of resources for the maximum number of each type of queue pair, such an approach is extremely inefficient and wasteful. That is, while the maximum number of each type of queue pair may be utilized by a fully configured host channel adapter, anything less that a fully configured host channel adapter will result in some of these resources being wasted, i.e. unused.
Therefore, it would be beneficial to have an apparatus, system and method in which a generalized or standard queue pair structure is provided that may be used with all types of P_Key handling and yet provide specific queue pair types when configured.